home *** CD-ROM | disk | FTP | other *** search
/ MacHack 2000 / MacHack 2000.toast / pc / The Hacks / Softshoe / Lisa's Mac Parts / AppleEvents / AEGetter.h < prev   
Text File  |  2000-06-23  |  1KB  |  58 lines

  1. // AEGetter.h
  2.  
  3. #ifndef AEGetter_h
  4. #define AEGetter_h
  5.  
  6. #ifndef ConstAEAttribute_h
  7. #include "ConstAEAttribute.h"
  8. #endif
  9. #ifndef ConstAEParameter_h
  10. #include "ConstAEParameter.h"
  11. #endif
  12. #ifndef ConstAEListItem_h
  13. #include "ConstAEListItem.h"
  14. #endif
  15. #ifndef ConstAEMember_h
  16. #include "ConstAEMember.h"
  17. #endif
  18. #ifndef AEDescriptor_h
  19. #include "AEDescriptor.h"
  20. #endif
  21.  
  22. // Someday, when Codewarrior can handle it, this should become
  23. // member templates like:
  24. //
  25. // template < DescType desiredType >
  26. // AEAtomicType<desiredType>::Type ConstAEAttribute::Get<desiredType>()
  27. //   {
  28. //    AEAtomicType<desiredType>::Type result;
  29. //    attribute.Get( desiredType, Data( &result, sizeof(result) ) );
  30. //   }
  31.  
  32. template < DescType desiredType > class AEGetter
  33.   {
  34.     private:
  35.         AEAtomicType<desiredType>::Type result;
  36.     
  37.     public:
  38.         AEGetter( const AEDescriptor& source )
  39.           { source.Get( desiredType, Data( &result, sizeof(result) ) ); }
  40.  
  41.         AEGetter( const ConstAEAttribute& source )
  42.           { source.Get( desiredType, Data( &result, sizeof(result) ) ); }
  43.  
  44.         AEGetter( const ConstAEParameter& source )
  45.           { source.Get( desiredType, Data( &result, sizeof(result) ) ); }
  46.  
  47.         AEGetter( const ConstAEListItem& source )
  48.           { source.Get( desiredType, Data( &result, sizeof(result) ) ); }
  49.  
  50.         AEGetter( const ConstAEMember& source )
  51.           { source.Get( desiredType, Data( &result, sizeof(result) ) ); }
  52.         
  53.         operator AEAtomicType<desiredType>::Type() const
  54.           { return result; }
  55.   };
  56.  
  57. #endif
  58.